VisualHMI - 控件权限

什么是控件权限?

当某种条件下,控件需要使能/禁止、可见/隐藏。VisualHMI所有控件支持该功能,组态配置最多两个条件逻辑判断

image-20231206084324945

使用范围:VisualHMI - HMI&M系列

应用下载:VisualHMI - 控件权限(点击下载)

1.属性说明

控件配置相关属性说明如下所示:

  1. 控件权限:√。开启既可以配置条件

  2. 条件地址:寄存器地址

  3. 比较:读取地址和值之间的比较关系,包括==、!=、<=、>=、<、>、IN:值在范围内(含边界)、OUT:值在范围外(不含边界);

  4. 值:与读取地址比较的数值,一般只有一个数值。当比较选择了IN、OUT时,有两个数值,包括下限值和上限值;

  5. 附加条件:AND/OR。AND且运算,OR或运算

  6. 附加-条件地址:寄存器地址

  7. 附加比较:读取地址和值之间的比较关系,包括==、!=、<=、>=、<、>、IN:值在范围内(含边界)、OUT:值在范围外(不含边界);

  8. 附加值:与读取地址比较的数值,一般只有一个数值。当比较选择了IN、OUT时,有两个数值,包括下限值和上限值;

  9. 无权限时:隐藏控件/禁止触控。即当条件满足时候,控件将可见,可触控

image-20231206094829497

2.应用

2.1.单条件显示隐藏

2.1.1.工程配置

画面中添加一个文字控件,用于LW1000 = 1显示,LW1000=0隐藏控件,配置如下所示

  1. 控件权限:√。
  2. 条件地址:LW1000
  3. 比较:==
  4. 值:1
  5. 无权限时:隐藏控件

image-20231206100722677

2.1.2.运行预览

运行虚拟屏。点击LW1000=0按钮,设置LW1000寄存器值,文字控件“广州大彩”实时显示隐藏,,如下所示:

Video_2023-12-06_101239~1

2.2.双条件显示隐藏

2.2.1.工程配置

画面中添加一个文字控件,用于LW1000 = 0 且 LW1001=1显示控件,反之隐藏,配置如下所示

  1. 控件权限:√
  2. 条件地址:LW1000

  3. 比较:=

  4. 值:1

  5. 附加条件:AND

  6. 附加-条件地址:LW1001

  7. 附加-比较:=

  8. 附加-值:1

  9. 无权限时:隐藏控件

image-20231206101723835

2.2.2.运行预览

运行虚拟屏。点击按钮,设置LW1000=0、设置LW1001为1,此时RTC控件显示,反之隐藏,如下所示:

Video_2023-12-06_102049

2.3.双条件使能禁止

2.3.1.工程配置

画面中添加一个多状态指示灯,用于LW1000 = 0 且 LW1002=1允许触控,反之禁止触摸,配置如下所示

  1. 控件权限:√
  2. 条件地址:LW1000

  3. 比较:==

  4. 值:1

  5. 附加条件:OR

  6. 附加-条件地址:LW1002

  7. 附加-比较:==

  8. 附加-值:1

  9. 无权限时:禁止触控

image-20231206102339124

2.3.2.运行预览

运行虚拟屏。点击按钮,设置LW1000 、LW1001任意一个为1时,多状态指示灯允许触控设置寄存器,反之点击无反应,如下所示:

Video_2023-12-06_102520

2.4.多条件使能禁止

实际应用中,可能会出现多个寄存器一起控制控件的显示/隐藏,或触控使能。控件权限组态配置最多2个条件,若有3个或更多,需要用LUA脚本处理,将多条件逻辑运算输出结果

2.4.1.工程配置

画面中添加一个多状态控件,用于多寄存器控制允许触摸(LW1000 = 1 &&LW1001 = 1&&LW1002 = 1)、禁止触摸,配置如下所示

  1. 控件权限:√。
  2. 条件地址:LW1100(将LW1000 、LW1001 、LW1002的运算结果,设置到该寄存器)
  3. 比较:==
  4. 值:1
  5. 无权限时:隐藏控件

image-20231206103014925

2.4.2.LUA脚本

在on_run回调函数里面,获取LW1000 、LW1001 、LW1002 的值,进行判断,在赋值给LW1100地址,如下所示:

function on_init()

    local _val1 = get_uint16(VT_RW, 0x1000)
    local _val2 = get_uint16(VT_RW, 0x1001)
    local _val3 = get_uint16(VT_RW, 0x1002)

    if _val1 == 1 and  _val2 == 1 and  _val3 == 1
    then
         set_uint16(VT_RW, 0x1100, 1)
    esle
         set_uint16(VT_RW, 0x1100, 0)
    end
end

2.4.3.运行预览

运行虚拟屏。点击按钮,设置LW1000 、LW1001、LW1002均为1,多状态指示灯运行触控点击,反之,点击无效,如下所示:

Video_2023-12-06_110847

Copyright ©Dacai all right reserved,powered by Gitbook该文件修订时间: 2023-12-07 19:05:49

results matching ""

    No results matching ""